package com.example.demo.controller.homepage;

import com.example.demo.entity.Result;
import com.example.demo.entity.base.Condition;
import com.example.demo.entity.base.QueryPara;
import com.example.demo.service.homepage.HomePageService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.nio.charset.StandardCharsets;
import java.util.*;

/**
 * @description:
 * @author: cj
 * @create: 10-12-23 10:55:29
 */
@RestController
@RequestMapping("homePage")
public class HomePageController {

    @Resource
    HomePageService homePageService;


    /**
     * 获取首页数据 （根据条件）
     *
     * @param map 条件
     * @return 数据
     */
    @PostMapping("/findHomePageData")
    public Result findHomePageData(@RequestBody Map<String, Object> map) {
        return Result.ok( homePageService.findHomePageData( map ) );
    }

    /**
     * 获取首页的文章
     *
     * @param page     分页参数
     * @param pageSize 分页参数
     * @return 文章
     */
    @GetMapping("/findBbs")
    public Result findBbs(Integer page, Integer pageSize) {
        return Result.ok( homePageService.findBbs( page, pageSize ) );
    }

    /**
     * 添加文章
     *
     * @param map 文章信息（title 标题，content 内容，cover 封面，author 作者, time 时间，intro 简介
     *            ——,comment_sum 评论数量，give_like_sum 点赞数量，read_sum 阅读量）
     */
    @PostMapping("/addBbs")
    public Result addBbs(@RequestBody Map<String, Object> map) {
        return Result.ok( "添加成功", homePageService.addBbs( map ) );
    }

    /**
     * 获取首页信息 (简介 封面 等等)
     *
     * @param map 条件操作对象
     * @return 首页信息
     */
    @PostMapping("/findHome")
    public Result findHome( @RequestBody Map<String, Object> map, HttpServletRequest request) {

        Condition condition = Condition.mapToCond( map );
        List<QueryPara> par = new ArrayList<>();
        par.add( new QueryPara( "state", "$eq", "1" ) );
        condition.setParAndList( par );
        return Result.ok( "操作成功", homePageService.findHome( condition ) );
    }
    /**
     * 获取首页信息 (简介 封面 等等)
     *
     * @param map 条件操作对象
     * @return 首页信息
     */
    @PostMapping("/findHome/text")
    public Result findHomeTest( Map<String, Object> map, HttpServletRequest request) {
        return findHome(map, request );
    }
    /**
     * 获取首页信息 (简介 封面 等等)
     *
     * @param map 条件操作对象
     * @return 首页信息
     */
    @PostMapping("/findHome/json")
    public Result findHomeJson( @RequestBody Map<String, Object> map, HttpServletRequest request) {
        return findHome(map, request );
    }



//    public static void main(String[] args) throws IOException {
//
//        //1.获取通道
//        SocketChannel socketChannel = SocketChannel.open(new InetSocketAddress("127.0.0.1", 9999));
//
//        //2.切换非阻塞模式
//        socketChannel.configureBlocking(false);
//
//        //3.分配指定大小的缓冲区
//        ByteBuffer buf = ByteBuffer.allocate(1024);
//
//        //4.发送数据给服务端
//        Scanner scanner = new Scanner(System.in);
//        while (scanner.hasNext()) {
//            String str = scanner.next();
//            buf.put((new Date().toString()+":"+str).getBytes());
//            buf.flip();
//            socketChannel.write(buf);
//            buf.clear();
//        }
//
//        //5.关闭通道
//        socketChannel.close();
//
//    }

}
